Finalize a recordy
Otázka od: Lebeda David
13. 9. 2004 7:54
Ahoj,
v objektu je private promenna typu record, ten record obsahuje promenne typu
string
(bez uvedeni delky). Obcas potrebuji tento record vyprazdnit. Pouzivam k tomu
ZeroMemory, nicmene mi bylo poradeno, ze pro korektni uvolnovani je treba
pouzivat
Finalize. Mam D5 a z helpu k Finalize si nejsem uplne jisty, ze ho pouzivam
spravne.
Mam record
TMyRec = record
a: integer;
b, c, d, e, f: string;
end;
existuje promenna
rec: TMyRec;
Postaci volani
Finalize(rec);
ZeroMemory(@rec, sizeof(rec));
nebo jsem to spatne pochopil? Vzhledem k tomu, ze ten record je v praxi pomerne
bohaty a navic by v pripade rozsireni recordu nemelo byt zapomenuto na
inicializaci i
novych pridanych prvku, nechci psat proceduru, kde vsechny polozky recordu
vyjmenuji
a priradim.
Diky.
David Lebeda
Odpovedá: delphin@post.cz
13. 9. 2004 10:22
> Postaci volani
> Finalize(rec);
> ZeroMemory(@rec, sizeof(rec));
Je to spravne. Finalize uvolni stavajici dlouhe stringy, varianty, interface
a dynamicke pole z pameti a ZeroMemory record inicializuje.
Misto ZeroMemory je pohodlnejsi pouzit Initialize, nemusi se psat delka.